In modern computing environments, computer systems are generally required to multi-task, meaning that the computer systems can handle a number of different tasks or processes at the same time. Additionally, the various tasks and processes to be completed may each have a different relative priority based on a number of different factors.
More of the computing environment's resources should be made available sooner for higher priority tasks. Ideally computer systems in these multi-tasking environments can efficiently switch between lower priority tasks to higher priority tasks to deliver maximum utility to the user or users. When a high priority task is waiting to be executed, the time spent waiting for a computer to perform a task that is low priority results in an inefficient use of resources.